package com.yidu.boss.sys.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yidu.boss.sys.domain.Bond;
import com.yidu.boss.sys.service.impl.BondServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @version 1.0
 * @Author Zhi
 * @Date 2019/11/22 10:16
 **/

@Controller
@RequestMapping("/bond/")
public class BondController {

    //定义业务层实现类
   @Autowired
    BondServiceImpl bondServiceImpl;

    /**
     * 分页方法算法
     *
     * @param bondPageInfo 分页后的对象
     * @param size             分页的条数
     * @return 返回一个用于前端数据的map数据格式
     */
    private Map<String, Object> pageALG(PageInfo bondPageInfo, long size) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", 0);
        map.put("msg", "");
        map.put("count", size);
        map.put("data", bondPageInfo.getList());
        return map;
    }


    /**
     * 跳转债券页面
     * @return
     */
    @RequestMapping("bondJsp")
    public String bondJsp(){
        return "bond";
    }


    /**
     * 查询所有债券
     * @return
     */
    @RequestMapping("bondlist")
    @ResponseBody
    public Object selectAllBond(Integer page, Integer limit){
        System.out.println("债券列表");
        //页面大小，页面
        PageHelper.startPage(page,limit);
        //根据条件查询债券数据
        List<Bond> bondList= bondServiceImpl.selectByExample(null);
        //使用pageInfo包装查询后的结果，封装了详细的查询数据，其中参数是列表数据
        PageInfo<Bond> bondPageInfo = new PageInfo<Bond>(bondList);
        //列表数据
        List<Bond> bondData = bondPageInfo.getList();
        //map集合
        Map<String,Object> map =pageALG(bondPageInfo,bondPageInfo.getTotal());
        /*//分页查询编码从0开始
        map.put("code", 0);
        //信息
        map.put("msg", "");
        //分页统计数量
        map.put("count",bondPageInfo.getTotal());
        //分页数据
        map.put("data", bondData);*/
        return map;
    }

    /**
     * 模糊查询档案
     *
     * @param condition 模糊查询条件
     * @param page      页码
     * @param limit     数据条数
     * @return 返回前端数据格式
     */
    @RequestMapping("selectBondLike")
    @ResponseBody
    public Object selectLike(String condition, Integer page, Integer limit) {
        System.out.println(condition);
        //判断模糊查询条件参数是否为空
        if(condition.equals("")){
            //为空显示所有列表页面
            Object o = selectAllBond(page,limit);
            return o;
        }
        //开始页
        PageHelper.startPage(page,limit);
        //调用业务层方法
        List<Bond> bondList = bondServiceImpl.selectSomeByMore(condition);
        PageInfo<Bond> bondPageInfo =new PageInfo<Bond>(bondList);
        //调用分页算法
        Map<String, Object> map = pageALG(bondPageInfo,bondPageInfo.getTotal());
        return map;
    }


    /**
     * 添加
     * @param bond
     * @return
     */
    @RequestMapping("insertBond")
    @ResponseBody
    public String addBond(Bond bond){
        System.err.println("添加");
        int i = bondServiceImpl.insertBond(bond);
        System.out.println(i);
        if(i > 0){
            return "添加成功";
        }
        return "添加失败";

    }


    /**
     * 修改
     * @param bond
     * @return
     */
    @RequestMapping("updateBond")
    @ResponseBody
    public String updateBond(Bond bond){
        System.err.println("修改");
        Bond example = new Bond();
        example.setBondid(bond.getBondid());
        example.setBondno(bond.getBondno());
        example.setBondname(bond.getBondname());
        example.setCouponrate(bond.getCouponrate());
        example.setBondstart(bond.getBondstart());
        example.setBondend(bond.getBondend());
        example.setBondtype(bond.getBondtype());
        example.setSum(bond.getSum());
        example.setBondinterest(bond.getBondinterest());
        example.setPaynum(bond.getPaynum());
        int i = bondServiceImpl.updateBond(bond);
        if(i > 0){
            return "修改成功";
        }
        return "修改失败";
    }


    /**
     * 删除
     * @param
     * @return
     */
    @RequestMapping("deleteBond")
    @ResponseBody
    public String deleteBond(String[] ids){
        System.err.println("删除");
        int i = 0;
        for(String id:ids){
            i += bondServiceImpl.deleteBond(id);
        }
        if(i > 0){
            return "删除成功";
        }
        return "删除失败";
    }
        /* for (int j = 0; j <id.length ; j++) {
             int i =custodianService.deleteCustodian(id[j]);
             if(i > 0){
                 return "删除成功";
             }
         }
        return "删除失败";
     }*/
}










